/*
    创建一个http服务  
    http 是在tcp net服务上进行的封装 增加了一些请求头 请求体 

*/
const http = require('http')
const server = http.createServer(function (req, res) {
    console.log('-----')
})

server.on('request', function (req, res) {
    // console.log('request', req, res)  http://localhost:3000/

    console.log(req.method) // GET
    console.log(req.url) // / 
    console.log(req.httpVersion) // 1.1
    console.log(req.headers) //  node会自定将请求头全部转化为小写
    let arr = []
    req.on('data', function (data) {
        console.log('data', data)
        arr.push(data)
    })
    req.on('end', function () {
        console.log('end', Buffer.concat(arr).toString())
    })
    res.statusCode = 202  // 返回的状态码
    res.statusMessage = 'my  202'
    res.setHeader('token', 'my my my ') // header信息 不可写中文
    res.write('res.write\n')
    res.end('res.end')
})

let port = 3000
//  端口可能会出现被占用的情况 且代码更新 需要关闭重启服务
server.listen(port, function () {
    console.log('server ' + port)
})

server.on('error', function (err) {
    if (err.code === 'EADDRINUSE') {
        server.listen(++port)
    }
})

// nodemon  xx.js   npm i nodemon -g  监听node服务代码变化自动重启